# -*- coding: utf-8 -*-
"""
Created on Tue Aug 15 09:17:14 2023

@author: skunk69
"""

import json

chinese_name = u'UCLA孤独量表'
english_name = 'UCLA Loneliness Scale, Version 3'
abbreviation = 'UCLA-LS-V3'
category = u'家庭与人际关系量表'

outline = u"""孤独是指个体对自己社会交往数量多少和质量好坏的主观感受。当一个人的社会关系网络令他满意的程度低于他的期望时，孤独感就产生了。孤独感作为一种主观感受与客观的社会孤独感（与社会隔离）在内涵上是不同的，是一种困扰人类的普遍心理。
UCLA孤独量表（UCLA Loneliness Scale, Univesity of California at LosAngels）由Russell等人于1978年编制而成，并在1980年和1988年进行了两次修订，分别为第二版和第三版。
第二版和第三版问世以来已被国外学者广泛应用于心理学、教育学和医学等领域。同时，由于该量表中没有出现“孤独”一词，这有助于减少个体在反应中出现的反应偏好的影响。"""

instruction = u"""下列是人们有时出现的一些感受。对每项描述，请指出你具有那种感觉的频度，并选择最符合你情况的答案。"""

with open('UCLA-LS-V3.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines[0::5]:
    key,value = line.strip().split('.',maxsplit=1)
    items[key] = value.strip()

reverse_items = [1,5,6,9,10,15,16,19,20]
scales = []
scales_items = []
factors = []
factors_scales = []
rating = [l.strip() for l in lines[1:5]]
score_rules = list(range(1,5))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""该量表为自评量表，主要评价由对社会交往的渴望与实际水平的差距而产生的孤独感。"""

reliability = u"""（缺少资料）。"""
validity = u"""（缺少资料）。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""在统计计分时，首先将反向条目反向计分，所有20个条目得分之和即为该量表的总分。总分分数越高，孤独程度越高。"""

applications = u"""UCLA孤独量表是该领域研究中使用频率最高的量表之一，但中文版心理测量学特性的研究却并不完备，在使用时应注意考察信效度。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)